module_files     = []
module_ldflags   = '-module -avoid-version'
module_includes  = [ '../../..', '../../bin', '../../bin/efx' ]
module_includes2 = [ '../..'   , '../bin'   , '../bin/efx'  ]
module_deps      = [ deps_e, dep_dl ]

mods = [
# standard run of the mill modules with cion and desktop
  'ibar',
  'pager',
  'temperature',
  'mixer',
  'notification',
  'everything',
  'ibox',
  'start',
  'winlist',
  'fileman',
  'fileman_opinfo',
  'conf',
  'msgbus',
  'music-control',
  'conf_applications',
  'conf_shelves',
  'conf_window_remembers',
  'conf_window_manipulation',
  'conf_menus',
  'conf_dialogs',
  'conf_performance',
  'conf_paths',
  'conf_interaction',
  'gadman',
  'geolocation',
  'connman',
  'bluez5',
  'syscon',
  'systray',
  'appmenu',
  'quickaccess',
  'shot',
  'backlight',
  'tasks',
  'conf_randr',
  'xkbswitch',
  'tiling',
  'packagekit',
  'wireless',
  'time',
  'luncher',
  'teamwork',
  'vkbd',
# modules have a custom binary as well
  'battery',
  'cpufreq',
  'clock',
  'sysinfo',
# custyom sub modules and custom data
  'wizard',
# also standard modules, just with only a desktop file using a generic icon
  'conf_theme',
  'conf_intl',
  'conf_display',
  'conf_bindings',
# also standard modules with no icon or desktop file
  'xwayland',
  'lokker',
  'polkit',
  'wl_x11',
  'wl_wl',
  'wl_buffer',
  'wl_drm',
  'wl_text_input',
  'wl_desktop_shell',
  'wl_weekeyboard',
### XXX: disabled for now
#  'wl_fb'
]

foreach m: mods
  desktop_only = false
  disable      = false
  no_icon      = false
  cargs        = ''
  data         = []
  deps         = deps_e
  inc          = []
  _dir         = join_paths(dir_module_e, m)
  _dir_bin     = join_paths(_dir, module_arch)

  opt = '-'.join(m.split('_'))

  if get_option(opt) == true
    subdir(m)
  else
    disable = true
  endif

  if disable == false

    _inc2 = []
    foreach i: inc
      _inc2 +=  join_paths('.', m, i)
    endforeach
    _inc          = include_directories(module_includes2,
                                        join_paths('.', m),
                                        _inc2)
    _conf         = 'USE_MODULE_' + m.underscorify().to_upper()
    module_files += join_paths(_dir_bin, m + '.so')

    if desktop_only == true
      _data = [ join_paths(m, 'module.desktop') ]
    elif no_icon == true
      _data = []
    else
      _data = [ join_paths(m, 'e-module-' + m + '.edj'),
                join_paths(m, 'module.desktop') ]
    endif

    foreach d: data
      _data += join_paths(m, d)
    endforeach

    if _data.length() > 0
      install_data(_data,
                   install_dir: _dir)
    endif

    config_h.set(_conf, '1')
    if cargs == ''
      shared_module(m, src,
                    include_directories: _inc,
                    name_prefix        : '',
                    dependencies       : [ module_deps, deps ],
                    install_dir        : _dir_bin,
                    install            : true,
                    link_args          : '-Wl,--unresolved-symbols=ignore-all'
                   )
    else
      shared_module(m, src,
                    include_directories: _inc,
                    c_args             : cargs,
                    name_prefix        : '',
                    dependencies       : [ module_deps, deps ],
                    install_dir        : _dir_bin,
                    install            : true,
                    link_args          : '-Wl,--unresolved-symbols=ignore-all'
                   )
    endif
  endif
endforeach
